package cn.tedu.erp.project.mapper;

import cn.tedu.erp.project.pojo.entity.CustomManage;
import cn.tedu.erp.project.pojo.entity.CustomSales;
import cn.tedu.erp.project.pojo.vo.CustomManageListVO;
import cn.tedu.erp.project.pojo.vo.CustomManageStandardVO;
import cn.tedu.erp.project.pojo.vo.CustomSalesListVO;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface CustomManageMapper {
    /**
     * 插入客户数据
     * @param customManage 客户数据
     * @return 受影响的行数
     */
    int insert(CustomManage customManage);

    /**
     * 批量插入客户数据
     * @param customManageList 若干个客户数据的集合
     * @return 受影响的行数
     */
    int insertBatch(List<CustomManage> customManageList);

    /**
     * 根据ID删除客户数据
     * @param id 尝试删除的客户数据的ID
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 根据若干ID删除客户数据
     * @param ids 尝试删除的若干个客户数据的ID的数组
     * @return 受影响的行数
     */
    int deleteByIds(Long[] ids);

    /**
     * 修改客户数据
     * @param customManage 封装了被修改的客户数据的ID和新的数据的对象
     * @return 受影响的行数
     */
    int update(CustomManage customManage);

    /**
     * 统计客户数据的数量
     * @return 客户数据的数量
     */
    int count();

    /**
     * 根据客户id统计客户数据的数量
     * @param id 客户编号
     * @return 匹配名称的客户数据的数量
     */
    int countById(Long id);

    /**
     * 根据名称和“非此id”统计数量,此方法将用于“有没有别的数据使用此名称”
     * @param id 客户ID
     * @param companyName 客户名称
     * @return
     */
    int countByNameAndNotId(String companyName,Long id);

    /**
     * 根据名称和“非此id”统计数量,此方法将用于“有没有别的数据使用此名称”
     * @param companyName 客户ID
     * @param companyName 客户名称
     * @return
     */
    int countByCompanyName( String companyName);

    /**
     * 根据ID查询客户数据的详情
     * @param id 客户ID
     * @return 匹配的客户数据的详情，如果没有匹配的数据，则返回null
     */
    CustomManageStandardVO getStandardById(Long id);

    /**
     * 查询客户列表
     * @return 客户列表
     */
    List<CustomManageListVO> list();
}
